#ifndef _LOGIC_NORMALSTATE_H_
#define _LOGIC_NORMALSTATE_H_

#include "StateMachineState.h"

/*
                                                            NormalStateMachine
                                                                   |
                    |----------------------------------------------------------------------------------------------|-----------------------------------------------|
                    |                                              |                                               |                                               |
NormalStateMachineLeFrntTurnLampFlicker         NormalStateMachineLeFrntTurnLampFlow            NormalStateMachineDayTimeMode                           NormalStateMachinePosnMode

*/

// declared state machine class
typedef struct NormalStateMachineDefault
{
    StateMachineBase sm_;

}NormalStateMachineDefault;
extern void NormalStateMachineDefaultEntry(void);
extern void NormalStateMachineDefaultExcute(void);
extern void NormalStateMachineDefaultExit(void);

//**
typedef struct NormalStateMachineLeFrntTurnLampFlicker
{
    StateMachineBase sm_;

}NormalStateMachineLeFrntTurnLampFlicker;
extern void NormalStateMachineLeFrntTurnLampFlickerEntry(void);
extern void NormalStateMachineLeFrntTurnLampFlickerExcute(void);
extern void NormalStateMachineLeFrntTurnLampFlickerExit(void);

//**
typedef struct NormalStateMachineLeFrntTurnLampFlow
{
    StateMachineBase sm_;

}NormalStateMachineLeFrntTurnLampFlow;
extern void NormalStateMachineLeFrntTurnLampFlowEntry(void);
extern void NormalStateMachineLeFrntTurnLampFlowExcute(void);
extern void NormalStateMachineLeFrntTurnLampFlowExit(void);

//**
typedef struct NormalStateMachineDayTimeMode
{
    StateMachineBase sm_;
} NormalStateMachineDayTimeMode;
extern void NormalStateMachineDayTimeModeEntry(void);
extern void NormalStateMachineDayTimeModeExcute(void);
extern void NormalStateMachineDayTimeModeExit(void);

//**
typedef struct NormalStateMachinePosnMode
{
    StateMachineBase sm_;
} NormalStateMachinePosnMode;
extern void NormalStateMachinePosnModeEntry(void);
extern void NormalStateMachinePosnModeExcute(void);
extern void NormalStateMachinePosnModeExit(void);

//*
typedef struct NormalStateMachine
{
    StateMachineBase sm_;
    NormalStateMachineDefault               defaultMode_;
    NormalStateMachineLeFrntTurnLampFlicker leFrntTurnLampFlicker_;
    NormalStateMachineLeFrntTurnLampFlow    leFrntTurnLampFlow_;
    NormalStateMachineDayTimeMode           dayTimeMode_;
    NormalStateMachinePosnMode              posnMode_;

    struct NormalStateMachine* this_;
}NormalStateMachine;
extern void NormalModeEntry(void);
extern void NormalModeExcute(void);
extern void NormalModeExit(void);

// definition global state machine class
extern NormalStateMachine g_NormalStateMachine;
extern void InitNormalStateMachine(void);





#endif
